﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUSucursal : Form
    {
        List<CONEXION.SUCURSAL> sucursales;
        CtrlSucursal controlador;

        public IUSucursal()
        {
            InitializeComponent();
            sucursales = new List<CONEXION.SUCURSAL>();
            controlador = new CtrlSucursal();
        }

        private void IUSucursal_Load(object sender, EventArgs e)
        {
            sucursales = controlador.getListSucursal();
            gridSucursal.DataSource = null;
            gridSucursal.DataSource = sucursales;
            setRowsReadOnly(); 
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridSucursal.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtNombreSucursal.Text))
            {
                //procedemos a registrar
                CONEXION.SUCURSAL suc = new CONEXION.SUCURSAL()
                {
                    nombreSucursal = txtNombreSucursal.Text,
                    eliminado = 0
                };

                DialogResult dr = controlador.registrarSucursal(suc);
                if (dr == DialogResult.OK)
                {
                    //actualizamos la lista      
                    sucursales = controlador.getListSucursal();
                    gridSucursal.DataSource = null;
                    gridSucursal.DataSource = sucursales;

                    setRowsReadOnly();
                }

                txtNombreSucursal.ResetText();
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridSucursal.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                txtNombreSucursal.Enabled = false;
                btnEliminar.Enabled = false;

                switch (btnModificar.Text)
                {
                    case "Modificar":
                        int index = gridSucursal.SelectedRows[0].Index;

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Completar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        //mostramos el boton cancelar
                        btnCancelar.Visible = true;

                        //volvemos la celda editable
                        gridSucursal.SelectedRows[0].ReadOnly = false;
                        gridSucursal.SelectedRows[0].Cells[1].Selected = true;
                        gridSucursal.CurrentCell = gridSucursal.SelectedRows[0].Cells[1];
                        gridSucursal.BeginEdit(true);
                        break;
                    case "Completar":
                        int ind = gridSucursal.CurrentRow.Index;
                        if (gridSucursal.Rows[ind].Cells[1].Value != null)
                        {
                            if (MessageBox.Show("¿Confirma actualizar la operación?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                            {
                                CONEXION.SUCURSAL suc = new CONEXION.SUCURSAL()
                                {
                                    idSucursal = gridSucursal.Rows[ind].Cells[0].Value.ToString(),
                                    nombreSucursal = gridSucursal.Rows[ind].Cells[1].Value.ToString(),
                                    eliminado = 0
                                };

                                DialogResult dr = controlador.actualizarSucursal(suc);
                            }
                        }
                        else
                        {
                            MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }

                        //actualizamos la lista      
                        sucursales = controlador.getListSucursal();
                        gridSucursal.DataSource = null;
                        gridSucursal.DataSource = sucursales;

                        setRowsReadOnly();

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Modificar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

                        //ocultamos  el boton cancelar
                        btnCancelar.Visible = false;

                        //habilitamos el panel superior
                        btnAgregar.Enabled = true;
                        txtNombreSucursal.Enabled = true;
                        btnEliminar.Enabled = true;

                        break;
                }
            }



        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            //actualizamos la lista      
            sucursales = controlador.getListSucursal();
            gridSucursal.DataSource = null;
            gridSucursal.DataSource = sucursales;

            setRowsReadOnly();

            //cambiamos el boton de modificar
            btnModificar.Text = "Modificar";
            btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

            //ocultamos  el boton cancelar
            btnCancelar.Visible = false;

            //habilitamos el panel superior
            btnAgregar.Enabled = true;
            txtNombreSucursal.Enabled = true;
            btnEliminar.Enabled = true;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridSucursal.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar la sucursal?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                {
                    int index = gridSucursal.SelectedRows[0].Index;
                    CONEXION.SUCURSAL suc = sucursales.ElementAt(index);
                    suc.eliminado = 1;

                    controlador.eliminarSucursal(suc);
                }
            }

            //actualizamos la lista      
            sucursales = controlador.getListSucursal();
            gridSucursal.DataSource = null;
            gridSucursal.DataSource = sucursales;

            setRowsReadOnly();
        }

        private void gridSucursal_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridSucursal.DataSource != null)
            {
                gridSucursal.Columns["idSucursal"].Visible = false;
                gridSucursal.Columns["nombreSucursal"].HeaderText = "Sucursal";
                gridSucursal.Columns["nombreSucursal"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridSucursal.Columns["eliminado"].Visible = false;
            }
        }
    }
}
